package org.eda.actividad3;

import java.util.ArrayList;
import java.util.Iterator;


public class ListaPartidos 
{
	private static ListaPartidos milistaPartidos = new ListaPartidos();
    private ArrayList<Partido> listaPartidos;

    public ListaPartidos() 
    {
        this.listaPartidos = new ArrayList<Partido>();
    }
    
    public static ListaPartidos getListaPartidos()
	{
		return milistaPartidos;
	}
	
	public ArrayList<Partido> getLista()
	{
		return this.listaPartidos;
	}
    
    public Iterator<Partido> getIterador()
	{
		return this.getLista().iterator();
	}
    
    public Partido buscarPartido(String pNombrePartido)
    {
    	boolean enc = false;
    	Iterator<Partido> itr = this.getIterador();
        Partido part = null;
        while(!enc && itr.hasNext()) 
        {
            part = itr.next();
            if(part.getNombre().equals(pNombrePartido)) 
            {
                enc = true;
            }
        }
        if(!enc)
        {
        	part = null;
        }
        return part;
    }
    
    public void anadirPartido(Partido pPartido) 
    {
        if(this.buscarPartido(pPartido.getNombre()) == null) 
        {
            this.getLista().add(pPartido);
        }
    }
    
    public void eliminarPartido(Partido pPartido) 
    {
        if(this.buscarPartido(pPartido.getNombre()) != null) 
        {
            this.getLista().remove(pPartido);
        }
    }
    
    public Candidato buscarCandidato(String pApellido, String pNombre)
    {
    	Candidato aux = new Candidato(pApellido, pNombre);
    	Partido part = this.buscarPartido(aux.getPartido().getNombre());
    	Candidato cand = part.getListaCandidatos().buscarCandidato(aux.getApellido(), aux.getNombre());
    	return cand;
    }
    
    public void anadirCandidato(Candidato pCandidato)
    {
    	Partido part = this.buscarPartido(pCandidato.getPartido().getNombre());
    	if(part == null)
    	{
    		this.anadirPartido(pCandidato.getPartido());
    	}
    	part.getListaCandidatos().anadirCandidato(pCandidato);
    }
    
    public void eliminarCandidato(Candidato pCandidato)
    {
    	Partido part = this.buscarPartido(pCandidato.getPartido().getNombre());
    	if(part != null)
    	{
    		part.getListaCandidatos().eliminarCandidato(pCandidato);
    	}
    }
}

